package com.onpositive.knowledge.model.value.audits;

import java.util.HashMap;

import com.onpositive.knowledge.model.values.ReplacementProposals;
import com.onpositive.semantic.model.api.property.IProperty;

public class WikiLinksDisambiguationAuditResult extends AbstractAuditResult {
	
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -4810037162248295658L;

	public WikiLinksDisambiguationAuditResult( IUniverseAudit audit ) {
		super( audit);
	}
	
	public WikiLinksDisambiguationAuditResult( IProperty prop ) {
		super( prop );
	}	
	
	HashMap<String,WikiLinksDisambiguationAuditResult> propertyAuditResults ;
	
	private HashMap <String,String> lcMap = new HashMap<String, String>() ;
	private HashMap <String,String> clMap = new HashMap<String, String>() ;
	private HashMap <String,String> captionCaseMap = new HashMap<String, String>() ;
	private HashMap <String,String> linksCaseMap = new HashMap<String, String>() ;
	
	//temporary
	private HashMap <String,Integer> linksMap = new HashMap<String, Integer>() ;
	private HashMap <String,Integer> captionsMap = new HashMap<String, Integer>() ;
	private HashMap <String,Integer> lcStatsMap = new HashMap<String, Integer>() ;
	private HashMap <String,Integer> clStatsMap = new HashMap<String, Integer>() ;
	private HashMap <String,HashMap<String,Integer>> captionCaseStatsMap = new HashMap<String, HashMap<String,Integer>>() ;
	private HashMap <String,HashMap<String,Integer>> linksCaseStatsMap = new HashMap<String, HashMap<String,Integer>>() ;
	
	
	ReplacementProposals captionProposals ;
	ReplacementProposals linkProposals ;
	
	public void putPropertyResult( String propId, WikiLinksDisambiguationAuditResult result) {
		if( propertyAuditResults == null )
			propertyAuditResults = new HashMap<String, WikiLinksDisambiguationAuditResult>() ;
		
		propertyAuditResults.put(propId, result) ;
	}
	
	public WikiLinksDisambiguationAuditResult getPropertyResult( String propId ) {
		if( propertyAuditResults == null )
			return null ;
		
		return propertyAuditResults.get( propId ) ;
	}
	
	public HashMap<String, Integer> getLinksMap() {
		return linksMap;
	}
	public HashMap<String, Integer> getCaptionsMap() {
		return captionsMap;
	}
	public HashMap<String, Integer> getLcStatsMap() {
		return lcStatsMap;
	}
	public HashMap<String, Integer> getClStatsMap() {
		return clStatsMap;
	}
	public HashMap<String, String> getLcMap() {
		return lcMap;
	}
	public HashMap<String, String> getClMap() {
		return clMap;
	}
	
	public HashMap<String, String> getCaptionCaseMap() {
		return captionCaseMap;
	}

	public HashMap<String, String> getLinksCaseMap() {
		return linksCaseMap;
	}

	public HashMap<String, HashMap<String, Integer>> getCaptionCaseStatsMap() {
		return captionCaseStatsMap;
	}

	public HashMap<String, HashMap<String, Integer>> getLinksCaseStatsMap() {
		return linksCaseStatsMap;
	}

	public ReplacementProposals getCaptionProposals() {
		return captionProposals;
	}
	public void setCaptionProposals(ReplacementProposals captionProposals) {
		this.captionProposals = captionProposals;
	}
	public ReplacementProposals getLinkProposals() {
		return linkProposals;
	}
	public void setLinkProposals(ReplacementProposals linkProposals) {
		this.linkProposals = linkProposals;
	}
	public void disposeTemporaryMaps()
	{
		clStatsMap = null ;
		lcStatsMap = null ;
		linksCaseStatsMap = null ;
		captionCaseStatsMap = null ;
		linksMap = null ;
		captionsMap = null ;
		
	}
}
